Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exam mode: Visualize student submissions in exam timeline #6882

Merged
merged 118 commits into from
Oct 21, 2023

Conversation

tobias-lippert
Copy link
Contributor

@tobias-lippert tobias-lippert commented Jul 12, 2023

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) database calls.
  • I followed the coding and design guidelines.
  • I added multiple integration tests (Spring) related to the features (with a high test coverage).
  • I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
  • I documented the Java code using JavaDoc style.

Client

  • Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data.
  • I followed the coding and design guidelines.
  • Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
  • I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
  • I added authorities to all new routes and checked the course groups for displaying navigation elements (links, buttons).
  • I documented the TypeScript code using JSDoc style.
  • I added multiple screenshots/screencasts of my UI changes.
  • I translated all newly inserted strings into English and German.

Motivation and Context

Artemis already stores every submission made during an exam in the database. So far, this data has not been made available to instructors to analyze potential suspicious behavior or just to understand how a student behaved during an exam.

Description

On the student exam detail page, there's now a button to the exam timeline.
I heavily reused the exam-submission-components in read-only view. Additionally, we show a timeline that allows to navigate to a particular timestamp, when a submission happened.
Instructors can also navigate to a particular exercise and are then shown the submission for the exercise that is closest to the last timestamp they selected.

  • in case the two submissions happen in the same second, the behavior is not really defined as we then have multiple submissions with the same timestamp and cannot reliably find the submission corresponding to a particular timestamp. To address this, we would need to store the timestamp in the database with a higher precision than seconds, which we won't do for now.

Steps for Testing

Have a look at the limitations above first.
For code review: Ignore all changes regarding apollon imports, as they will be gone as soon as Paul's branch is merged into develop.

Prerequisites:

  • 1 Instructor
  • 1 Student
  1. Log in to Artemis
  2. Navigate to Course Administration
  3. Create an exam with all exercise types (programming,file upload, quiz, modeling,text)
  4. participate as student in the exam and submit the exam.
  5. As an instructor go to student exams -> student exam of student -> view -> exam timeline
  6. navigate around the timeline and make sure the correct submission is shown for the timestamp.

Exam Mode Testing

This PR touches every exam-submission component, therefore the student view of the exam mode needs thorough testing

Prerequisites:

  • 1 Instructor
  • 2 Students
  1. Log in to Artemis
  2. Participate in the exam as a student
  3. Make sure submitting exercises of all types is still possible.
  4. Make sure the UI didn't change.

Review Progress

Performance Review

  • I confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance
  • I confirm that the server changes (in particular related to database calls) are implemented with a very good performance

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Exam Mode Test

  • Test 1
  • Test 2

Test Coverage

Client

Class/File Line Coverage Confirmation (assert/expect) Comment
submission-version.model.ts 100%
student-exam-timeline.component.ts 95.45%
exam-navigation-bar.component.ts 85.29% my changes are covered
exam-page.component.ts 100%
exam-submission.component.ts 100%
file-upload-exam-submission.component.ts 92.18% empty methods that throw an error because submission versions are not supported.
modeling-exam-submission.component.ts 97.67%
programming-exam-submission.component.ts 88.88% empty methods that throw an error because submission versions are not supported.
quiz-exam-submission.component.ts 93.1%
text-exam-submission.component.ts 100%
submission.service.ts 98.03%
navbar.component.ts 89.89%

Server

Class/File Line Coverage Confirmation (assert/expect) Comment
SubmissionRepository.java 89% my changes are covered
SubmissionResource.java 87% my changes are covered

Screenshots

exam_timeline_new.mp4

image

@github-actions github-actions bot added tests server Pull requests that update Java code. (Added Automatically!) client Pull requests that update TypeScript code. (Added Automatically!) labels Jul 12, 2023
@tobias-lippert tobias-lippert marked this pull request as ready for review July 13, 2023 20:45
@tobias-lippert tobias-lippert requested a review from a team as a code owner July 13, 2023 20:45
Copy link
Contributor

@florian-glombik florian-glombik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested on ts2, for me the timeline was not displayed properly

TypeError: Cannot read properties of undefined (reading 'diff'), there seems to be an issue with missing timestamps

image

Copy link
Contributor

@MaximilianAnzinger MaximilianAnzinger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code

# Conflicts:
#	src/main/webapp/app/shared/resizeable-container/resizeable-container.component.html
Copy link
Contributor

@florian-glombik florian-glombik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested on ts2, the feature now works for my submission from the testing session!

laurenzfb
laurenzfb previously approved these changes Oct 16, 2023
Copy link
Contributor

@laurenzfb laurenzfb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested in testing session. Very nice!

max-bergmann
max-bergmann previously approved these changes Oct 16, 2023
Copy link
Contributor

@max-bergmann max-bergmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested in testing session - for my submission everything worked as expected

# Conflicts:
#	src/main/webapp/app/exam/manage/exam-management.route.ts
@krusche krusche merged commit 62c9608 into develop Oct 21, 2023
19 of 28 checks passed
@krusche krusche deleted the feature/exam-timeline branch October 21, 2023 10:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client Pull requests that update TypeScript code. (Added Automatically!) ready to merge server Pull requests that update Java code. (Added Automatically!) tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.